课程主页:http://speech.ee.ntu.edu.tw/~tlkagk/courses_DLHLP20.html

视频地址:https://www.bilibili.com/video/BV1RE411g7rQ?p=1

参考资料:https://blog.csdn.net/qq_44574333/category_10304412_2.html

备注:图片均来自于课件。

这次回顾P9,这部分介绍了语音识别中的语言模型。

语音识别中的语言模型

这部分介绍为什么要在语音识别中增加语言模型。

语言模型

引子

语言模型估计token序列$Y=y_1,y_2,\ldots, y_n$的概率$P\left(y_{1}, y_{2}, \ldots \ldots, y_{n}\right)$。

过去需要语言模型是因为HMM的解码过程为:

现在Seq2Seq模型的解码过程为:

但是实际中,一般使用如下方法:

尽管从概率角度不好解释,但是实际上该效果会更好,老师解释的角度如下:

  • 训练$ P(Y \mid {X}) $需要成对数据,收集成本较大。
  • 训练$P(Y)$只需要文本数据,很好收集。

语言模型介绍

$N$-gram

这部分可以参考如下笔记:

https://doraemonzzz.com/2019/01/27/Michael%20Collins%20NLP%20Lecture%202/#toc-heading-5

$N$-gram的最大问题是许多gram出现次数很少或者为0,所以估计的概率会很低,为了解决这点,人们提出一些方法。

连续LM

该方法来自于推荐系统的矩阵分解方法:

连续LM将横轴和纵轴换成token:

$n_{ij}$的含义是在训练数据中,第$i$个token出现在第$j$个token后的次数,我们希望:

以此来估计表格中缺失的部分。

我们的目标是:

NN视角

可以将上述模型视为简单的NN:

基于NN的LM

最初的思路是取代n-gram,即根据前$k$个单词预测下一个单词:

利用条件概率公式可以计算一段句子出现的概率。

基于RNN的LM

$N$-gram只能利用前$N$项的信息,如果句子太长,则效果会不太好,为了解决这点,可以使用RNN,即预测每个单词的时候考虑之前全部单词:

如何使用LM提升语音识别

以LAS为例:

输出 隐藏层
训练后 浅融合 深融合
训练前 冷融合
  • 横轴:如何结合。
  • 纵轴:何时结合。

浅融合

将LAS和LM分别训练好,输出为概率乘积(带权):

深融合

将LAS和LM分别训练好,然后将两者的输出(或者中间层)输入到一个网络中,该网络的输出为最终的概率:

如果直接将LM的隐藏层直接接入网络中,那么每次更换LM,都可能需要重新训练网络(因为LM隐藏层的维度可能不同),所以比较好的方式是将输出层SoftMax之前的结果输入到网络中:

那么什么时候会需要更换LM呢?老师举的例子是更换领域知识,因为很多单词发音相同,但是在不同领域中对应的单词不同,例如城市和程式。

冷融合

将训练好的LM和未训练的LAS结合,然后利用端到端的方式训练LAS,该方法的优势是可以加速LAS的训练,注意此时无法随意更换LAS,因为该LAS是基于LM训练的: